library(ggplot2)
library(dplyr)
library(plotly)
head(state.x77)
Population Income Illiteracy Life Exp Murder HS Grad
Alabama 3615 3624 2.1 69.05 15.1 41.3
Alaska 365 6315 1.5 69.31 11.3 66.7
Arizona 2212 4530 1.8 70.55 7.8 58.1
Arkansas 2110 3378 1.9 70.66 10.1 39.9
California 21198 5114 1.1 71.71 10.3 62.6
Colorado 2541 4884 0.7 72.06 6.8 63.9
Frost Area
Alabama 20 50708
Alaska 152 566432
Arizona 15 113417
Arkansas 65 51945
California 20 156361
Colorado 166 103766
nrow(state.x77)
[1] 50
head(state.abb)
[1] "AL" "AK" "AZ" "AR" "CA" "CO"
states_map <- map_data("state")
head(states_map)
states <- as.data.frame(state.x77)
states$region <- tolower(rownames(states))
head(states)
fact_join <- left_join(states_map, states, by = "region")
p1 <- ggplot(fact_join, aes(long, lat, group = group)) + geom_polygon(aes(fill = Population), color = "white") + scale_fill_viridis_c(option = "C") + theme_classic()
ggplotly(p1)
library(cartography)
library(sp)
data("nuts2006")
summary(nuts2.spdf)
Object of class SpatialPolygonsDataFrame
Coordinates:
min max
x 2641758 7313157
y 1427614 5411284
Is projected: TRUE
proj4string :
[+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000
+ellps=GRS80 +units=m +no_defs]
Data attributes:
id
Length:310
Class :character
Mode :character
head(nuts2.df)
p2 <- plot(nuts0.spdf, border = NA, col = NA, bg = "#A6CAE0")
p2 <- p2 + plot(world.spdf, border = NA, col = "#E3DEBF", add = TRUE)
p2 <- p2 + plot(nuts0.spdf, border = "grey80", col = "#D1914D", add = TRUE)
p2 <- p2 + propSymbolsLayer(spdf = nuts0.spdf, df = nuts0.df, var = "pop2008", symbols = "circle", col = "#920000", legend.pos = "right", legend.title.txt = "Total\npopulation (2008)", legend.style = "c")
p2 <- p2 + layoutLayer(title = "European Countries Population", author = "cartography", sources = "Eurostat, 2008", scale = NULL, south = TRUE)

p2
integer(0)
library(geofacet)
head(state_ranks)
p3 <- ggplot(state_ranks, aes(variable, rank, fill = variable)) + geom_col() + coord_flip() + theme_bw() + facet_geo(~state, grid = "us_state_grid2")
p3

library(statebins)
library(tidyverse)
data("USArrests")
head(USArrests)
USArrests$state <- rownames(USArrests)
p4 <- statebins(USArrests, value_col = "Assault", name = "Assault") + theme_statebins(legend_position = "right")
p4

rect <- data.frame(x = 50, y = 50)
line <- data.frame(x = c(1, 200), y = c(100, 1))
p5 <- ggplot(mapping = aes(x, y)) + geom_tile(data = rect, aes(width = 50, height = 50)) + geom_line(data = line)
p5 + coord_polar("x")

p5 + coord_polar("y")

head(mtcars)
p6 <- ggplot(mtcars, aes(x = "", fill = factor(carb))) + geom_bar(width = 1)
ggplotly(p6)
p6 + coord_polar()

p6 + coord_polar(theta = "y")

p7 <- ggplot(mtcars, aes(x = factor(cyl), fill = factor(cyl))) + geom_bar(width = 1, color = "black")
ggplotly(p7)
p7 + coord_polar()

p7 + coord_polar(theta = "y")

head(diamonds)
p8 <- ggplot(diamonds, aes(x = "", fill = color)) + geom_bar(width = 1)
ggplotly(p8)
p8 + coord_polar()

p8 + coord_polar(theta = "y")

p9 <- ggplot(diamonds, aes(x = clarity, fill = cut)) + geom_bar(width = 1)
ggplotly(p9)
p9 + coord_polar()

p9 + coord_polar(theta = "y")

library(gcookbook)
head(wind)
p10 <- ggplot(wind, aes(x = DirCat, fill = SpeedCat)) + geom_histogram(binwidth = 15, boundary = -7.5)
ggplotly(p10)
p10 + coord_polar()

p10 + coord_polar(theta = "y")

LS0tDQp0aXRsZTogIlNwYXRpYWwgRGF0YSAmIENpcmN1bGFyIFBsb3RzIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCmBgYHtyfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkocGxvdGx5KQ0KaGVhZChzdGF0ZS54NzcpDQpucm93KHN0YXRlLng3NykNCmhlYWQoc3RhdGUuYWJiKQ0KYGBgDQpgYGB7cn0NCnN0YXRlc19tYXAgPC0gbWFwX2RhdGEoInN0YXRlIikNCmhlYWQoc3RhdGVzX21hcCkNCg0Kc3RhdGVzIDwtIGFzLmRhdGEuZnJhbWUoc3RhdGUueDc3KQ0Kc3RhdGVzJHJlZ2lvbiA8LSB0b2xvd2VyKHJvd25hbWVzKHN0YXRlcykpDQpoZWFkKHN0YXRlcykNCmBgYA0KYGBge3J9DQpmYWN0X2pvaW4gPC0gbGVmdF9qb2luKHN0YXRlc19tYXAsIHN0YXRlcywgYnkgPSAicmVnaW9uIikNCg0KcDEgPC0gZ2dwbG90KGZhY3Rfam9pbiwgYWVzKGxvbmcsIGxhdCwgZ3JvdXAgPSBncm91cCkpICsgZ2VvbV9wb2x5Z29uKGFlcyhmaWxsID0gUG9wdWxhdGlvbiksIGNvbG9yID0gIndoaXRlIikgKyBzY2FsZV9maWxsX3ZpcmlkaXNfYyhvcHRpb24gPSAiQyIpICsgdGhlbWVfY2xhc3NpYygpDQoNCmdncGxvdGx5KHAxKQ0KYGBgDQpgYGB7cn0NCmxpYnJhcnkoY2FydG9ncmFwaHkpDQpsaWJyYXJ5KHNwKQ0KZGF0YSgibnV0czIwMDYiKQ0Kc3VtbWFyeShudXRzMi5zcGRmKQ0KaGVhZChudXRzMi5kZikNCg0KcDIgPC0gcGxvdChudXRzMC5zcGRmLCBib3JkZXIgPSBOQSwgY29sID0gTkEsIGJnID0gIiNBNkNBRTAiKQ0KcDIgPC0gcDIgKyBwbG90KHdvcmxkLnNwZGYsIGJvcmRlciA9IE5BLCBjb2wgPSAiI0UzREVCRiIsIGFkZCA9IFRSVUUpDQpwMiA8LSBwMiArIHBsb3QobnV0czAuc3BkZiwgYm9yZGVyID0gImdyZXk4MCIsIGNvbCA9ICIjRDE5MTREIiwgYWRkID0gVFJVRSkNCg0KcDIgPC0gcDIgKyBwcm9wU3ltYm9sc0xheWVyKHNwZGYgPSBudXRzMC5zcGRmLCBkZiA9IG51dHMwLmRmLCB2YXIgPSAicG9wMjAwOCIsIHN5bWJvbHMgPSAiY2lyY2xlIiwgY29sID0gIiM5MjAwMDAiLCBsZWdlbmQucG9zID0gInJpZ2h0IiwgbGVnZW5kLnRpdGxlLnR4dCA9ICJUb3RhbFxucG9wdWxhdGlvbiAoMjAwOCkiLCBsZWdlbmQuc3R5bGUgPSAiYyIpDQoNCnAyIDwtIHAyICsgbGF5b3V0TGF5ZXIodGl0bGUgPSAiRXVyb3BlYW4gQ291bnRyaWVzIFBvcHVsYXRpb24iLCBhdXRob3IgPSAiY2FydG9ncmFwaHkiLCBzb3VyY2VzID0gIkV1cm9zdGF0LCAyMDA4Iiwgc2NhbGUgPSBOVUxMLCBzb3V0aCA9IFRSVUUpDQoNCnAyDQpgYGANCmBgYHtyfQ0KbGlicmFyeShnZW9mYWNldCkNCmhlYWQoc3RhdGVfcmFua3MpDQoNCnAzIDwtIGdncGxvdChzdGF0ZV9yYW5rcywgYWVzKHZhcmlhYmxlLCByYW5rLCBmaWxsID0gdmFyaWFibGUpKSArIGdlb21fY29sKCkgKyBjb29yZF9mbGlwKCkgKyB0aGVtZV9idygpICsgZmFjZXRfZ2VvKH5zdGF0ZSwgZ3JpZCA9ICJ1c19zdGF0ZV9ncmlkMiIpDQoNCnAzDQpgYGANCmBgYHtyfQ0KbGlicmFyeShzdGF0ZWJpbnMpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmRhdGEoIlVTQXJyZXN0cyIpDQpoZWFkKFVTQXJyZXN0cykNCg0KVVNBcnJlc3RzJHN0YXRlIDwtIHJvd25hbWVzKFVTQXJyZXN0cykNCg0KcDQgPC0gc3RhdGViaW5zKFVTQXJyZXN0cywgdmFsdWVfY29sID0gIkFzc2F1bHQiLCBuYW1lID0gIkFzc2F1bHQiKSArIHRoZW1lX3N0YXRlYmlucyhsZWdlbmRfcG9zaXRpb24gPSAicmlnaHQiKQ0KDQpwNA0KYGBgDQpgYGB7cn0NCnJlY3QgPC0gZGF0YS5mcmFtZSh4ID0gNTAsIHkgPSA1MCkNCmxpbmUgPC0gZGF0YS5mcmFtZSh4ID0gYygxLCAyMDApLCB5ID0gYygxMDAsIDEpKQ0KDQpwNSA8LSBnZ3Bsb3QobWFwcGluZyA9IGFlcyh4LCB5KSkgKyBnZW9tX3RpbGUoZGF0YSA9IHJlY3QsIGFlcyh3aWR0aCA9IDUwLCBoZWlnaHQgPSA1MCkpICsgZ2VvbV9saW5lKGRhdGEgPSBsaW5lKQ0KDQpwNSArIGNvb3JkX3BvbGFyKCJ4IikNCnA1ICsgY29vcmRfcG9sYXIoInkiKQ0KYGBgDQpgYGB7cn0NCmhlYWQobXRjYXJzKQ0KDQpwNiA8LSBnZ3Bsb3QobXRjYXJzLCBhZXMoeCA9ICIiLCBmaWxsID0gZmFjdG9yKGNhcmIpKSkgKyBnZW9tX2Jhcih3aWR0aCA9IDEpDQoNCmdncGxvdGx5KHA2KQ0KcDYgKyBjb29yZF9wb2xhcigpDQpwNiArIGNvb3JkX3BvbGFyKHRoZXRhID0gInkiKQ0KYGBgDQpgYGB7cn0NCnA3IDwtIGdncGxvdChtdGNhcnMsIGFlcyh4ID0gZmFjdG9yKGN5bCksIGZpbGwgPSBmYWN0b3IoY3lsKSkpICsgZ2VvbV9iYXIod2lkdGggPSAxLCBjb2xvciA9ICJibGFjayIpDQoNCmdncGxvdGx5KHA3KQ0KcDcgKyBjb29yZF9wb2xhcigpDQpwNyArIGNvb3JkX3BvbGFyKHRoZXRhID0gInkiKQ0KYGBgDQpgYGB7cn0NCmhlYWQoZGlhbW9uZHMpDQoNCnA4IDwtIGdncGxvdChkaWFtb25kcywgYWVzKHggPSAiIiwgZmlsbCA9IGNvbG9yKSkgKyBnZW9tX2Jhcih3aWR0aCA9IDEpDQoNCmdncGxvdGx5KHA4KQ0KcDggKyBjb29yZF9wb2xhcigpDQpwOCArIGNvb3JkX3BvbGFyKHRoZXRhID0gInkiKQ0KYGBgDQpgYGB7cn0NCnA5IDwtIGdncGxvdChkaWFtb25kcywgYWVzKHggPSBjbGFyaXR5LCBmaWxsID0gY3V0KSkgKyBnZW9tX2Jhcih3aWR0aCA9IDEpDQoNCmdncGxvdGx5KHA5KQ0KcDkgKyBjb29yZF9wb2xhcigpDQpwOSArIGNvb3JkX3BvbGFyKHRoZXRhID0gInkiKQ0KYGBgDQpgYGB7cn0NCmxpYnJhcnkoZ2Nvb2tib29rKQ0KaGVhZCh3aW5kKQ0KDQpwMTAgPC0gZ2dwbG90KHdpbmQsIGFlcyh4ID0gRGlyQ2F0LCBmaWxsID0gU3BlZWRDYXQpKSArIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gMTUsIGJvdW5kYXJ5ID0gLTcuNSkNCg0KZ2dwbG90bHkocDEwKQ0KcDEwICsgY29vcmRfcG9sYXIoKQ0KcDEwICsgY29vcmRfcG9sYXIodGhldGEgPSAieSIpDQpgYGA=